<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>javascript 阶段</title>
</head>
<body>


    <script>
        // 工厂模式
        // 定义函数
        function factory(color) {// 形参
            // 空对象
            var obj = {};
            // 添加属性
            obj.color = color || "red";
            // 添加方法
            obj.sayHello = function(){
                // 通过this引用obj的属性
                console.log(this.color);
            }
            // 返回obj对象
            return obj ;
        }

        // 调用工厂函数(对象1)
        var o1 = factory();
        // console.log(o1);// undefined 没有return 任何数据的情况下
        console.log(o1);// {color: "red", sayHello: ƒ}

        // (对象2)
        var o2 = factory("green");// 实参
        console.log(o2);// {color: "green", sayHello: ƒ}

        // (对象3)
        var o3 = factory("blue");// 实参
        console.log(o3);// {color: "blue", sayHello: ƒ}


        // 总结:
            // 工厂模式产生对象(批量),创建对象,只需调用函数即可
            // 减少部分多余的代码,简化了程序的代码
            // 可以灵活记录数据,方便业务的拓展




    </script>
</body>
</html>